home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac Magazin/MacEasy 32
/
Mac Magazin and MacEasy Magazine CD - Issue 32.iso
/
Multimedia
/
PlayerPRO 4.5.5 Dev.Kit
/
Plug-Ins
/
Instruments Import⁄Export Plugs
/
SndUtils.c
< prev
next >
Wrap
Text File
|
1996-07-01
|
3KB
|
155 lines
/******************** ***********************/
//
// Player PRO 4.5x -- Usefull functions for sound file import/export
//
// Version 3.0
//
// To use with PlayerPRO & CodeWarrior ( current vers 8)
//
// Antoine ROSSET
// 16 Tranchees
// 1206 GENEVA
// SWITZERLAND
//
// FAX: (+41 22) 346 11 97
// Compuserve: 100277,164
// Phone: (+41 79) 203 74 62
// Internet: rosset@dial.eunet.ch
/******************** ***********************/
#include "PPPlug.h"
#include "sound.h"
void ConvertInstrumentIn( register Byte *tempPtr, register long sSize)
{
register Byte val = 0x80;
while( sSize > 0)
{
sSize--;
*(tempPtr + sSize) -= val;
}
}
Ptr MyExp1to3( Ptr sound, unsigned long numSampleFrames)
{
long i;
Ptr inState, outState;
Ptr outBuffer;
outState = NewPtrClear( 128);
inState = NewPtrClear( 128);
if( inState == nil) return 0L;
outBuffer = NewPtr( numSampleFrames*6);
if( outBuffer == nil) return 0L;
Exp1to3( sound, outBuffer, numSampleFrames, (StateBlockPtr) inState, (StateBlockPtr) outState, 1, 1);
DisposPtr( sound);
sound = outBuffer;
DisposPtr( inState);
DisposPtr( outState);
return sound;
}
Ptr MyExp1to6( Ptr sound, unsigned long numSampleFrames)
{
long i;
Ptr inState, outState;
Ptr outBuffer;
outState = NewPtrClear( 128);
inState = NewPtrClear( 128);
if( inState == nil) return 0L;
outBuffer = NewPtr( numSampleFrames * 6);
if( outBuffer == nil) return 0L;
Exp1to6( sound, outBuffer, numSampleFrames, (StateBlockPtr) inState, (StateBlockPtr) outState, 1, 1);
DisposPtr( sound);
sound = outBuffer;
DisposPtr( inState);
DisposPtr( outState);
return sound;
}
sData * MADCreateSample()
{
sData *curData;
curData = (sData*) NewPtrClear( sizeof( sData));
curData->size = 0L;
curData->loopBeg = 0L;
curData->loopSize = 0L;
curData->vol = MAX_VOLUME;
curData->c2spd = NOFINETUNE;
curData->loopType = 0;
curData->amp = 8;
curData->panning = 0;
curData->relNote = 0;
curData->data = 0L;
return curData;
}
OSErr AddSoundToMAD( Ptr theSound,
long lS,
long lE,
short sS,
short bFreq,
unsigned long rate,
Str255 name,
InstrData *InsHeader, // Ptr on instrument header
sData **sample, // Ptr on samples data
short *sampleID)
{
long inOutBytes, i;
sData *curData;
if( theSound == 0L) return MADParametersErr;
if( *sampleID > MAXSAMPLE) return MADParametersErr;
inOutBytes = GetPtrSize( theSound);
///////
if( *sampleID >= 0) // replace this sample
{
curData = sample[ *sampleID];
}
else // add a sample : why? because *sampleID == -1
{
*sampleID = InsHeader->numSamples;
InsHeader->numSamples++;
curData = sample[ *sampleID] = MADCreateSample();
}
if( curData->data != 0L) DisposPtr( curData->data);
curData->data = theSound;
curData->size = inOutBytes;
curData->loopBeg = lS;
curData->loopSize = lE - lS;
curData->vol = 64;
curData->amp = sS;
curData->c2spd = rate >> 16L;
curData->relNote = 60 - bFreq;
for(i=0; i<32; i++)
{
if( i < name[ 0]) curData->name[i] = name[i+1];
else curData->name[i] = '\0';
}
return noErr;
}